package br.org.espmessenger.modelo;

import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;

@Entity
@DiscriminatorValue("cva")
public class MensagemConversa extends Mensagem {
	private static final long serialVersionUID = 1L;

	private Conversa conversa;
	
	public MensagemConversa() {}

	@ManyToOne
	@JoinColumn(name="id_conversa")
	public Conversa getConversa() {
		return conversa;
	}

	public void setConversa(Conversa conversa) {
		this.conversa = conversa;
	}

	@Override
	protected boolean equalsEspecifico(Mensagem m) {
		if (getTexto() == null || conversa == null) throw new IllegalStateException();
		return  getTexto().equals(m.getTexto()) &&
				conversa.equals(((MensagemConversa)m).conversa);
	}

	@Override
	protected int hashCodeEspecifico() {
		int h1 = (getTexto() == null) ? 0 : getTexto().hashCode();
		int h2 = (conversa == null) ? 0 : conversa.hashCode();
		
		return h1 + h2;
	}
}
